package main

import "fmt"

/*
   接口
   type 接口名 interface {
	方法名1 （参数列表1） 返回值列表1
	方法名2 （参数列表2） 返回值列表2
	...
   }
*/

type Usber interface { //接口其实也是一种类型
	start(string, string)

	stop()
}

// 如果接口里面有方法，必须通过结构体或者通过自定义类型实现这个接口
type Phone struct {
	Name string
}

// 手机要实现usb接口的话必须得实现usb接口的所有方法
func (p Phone) start(a, b string) {
	fmt.Println(p.Name + "开始" + a + b)
}
func (p Phone) stop() {
	fmt.Println(p.Name + "停止")
}

type Camera struct{}

func (c Camera) start(a, b string) {
	fmt.Println("相机开机" + a + b)
}
func (c Camera) stop() {
	fmt.Println("相机关机")
}
func (c Camera) run() {
	fmt.Println("相机运行")
}

func main() {
	var p Phone = Phone{Name: "华为手机"}
	p.start("连接", "数据")

	var p1 Usber
	fmt.Println(p1)

	c := Camera{}
	var c1 Usber = c //表示相机实现了Usb接口
	c1.start("11", "22")
	c.run()
}
